package main

import "fmt"

func main() {
	t := Teacher{"王老师", 30, "男", "语文"}
	t.teach()
	t2 := &t
	t2.teach()

	//定义子类对象访问父类方法
	c1 := Child{Parent{"小明", 18}, "school"}
	c1.eat()
	c1.study()
}

//定义教师结构体
type Teacher struct {
	name    string
	age     int
	sex     string
	subject string
}

//定义teach方法
func (t Teacher) teach() {
	fmt.Println(t.name, "在教", t.subject)
}

//1、定义一个父类
type Parent struct {
	name string
	age  int
}

//2、定义一个子类
type Child struct {
	Parent
	school string
}

//3、父类方法
func (p Parent) eat() {
	fmt.Println(p.name, "父类方法，在吃饭")
}

//4、子类独有方法
func (c Child) study() {
	fmt.Println(c.name, "子类独有方法，在学习")
}

//5、重新父类方法
func (c Child) eat() {
	fmt.Println(c.name, "子类重写父类方法，吃零食")
}
